There are several approaches to deploying software. In one approach a software developer creates a solution that may include executable files, documents, and other data and distributes the solution with a document that describes how to install the solution. A person installing the solution may receive the solution in a package, extract the resources in the solution, and attempt to follow the steps prescribed in the document. If the installation document is complete and well-written and the installing person is skilled, this approach works, but may be time consuming.
Another approach to deploying software is to create an executable binary. The binary may then be executed to install the solution on a target device. In executing, the binary may detect the configuration of the target device, create folders, make registry and other database changes, extract files from the solution, install the files to the target device, and so forth. This approach is often opaque, fairly rigid, and may give an installing person few options for customizing the solution to the target device.
Other approaches also exist, but in general, deploying software on one or more machines may be complex, confusing, and time consuming.
The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one exemplary technology area where some embodiments described herein may be practiced.